<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" id="inp1" placeholder="年(1000-3000)">
    <input type="text" id="inp2" placeholder="月">
    <input type="text" id="inp3" placeholder="日期">
    <button id="btn">判断</button>

    <script>

        // 思路
        //  判断日期是否合法
        //   先判断年  1000-3000 整数
        //   再判断月  1-12 整数
        //   再日期    1-maxDay 整数
        //              只要写出maxDay的值就好了   maxDay跟月份有关系

        // 注意 if嵌套
        //  年ok才判断月，月ok才判断日期






        var oYear = document.getElementById('inp1') ;
        var oMonth = document.getElementById('inp2') ;
        var oDay = document.getElementById('inp3') ;
        var oBtn = document.getElementById('btn') ;

        oBtn.onclick = function() {
            // 拿值
            var y = oYear.value ;
            // 判断年是否合法
            //    1000-3000之间的整数
            if(y >= 1000 && y <= 3000 && y % 1 === 0) {
                // 判断月份合法
                var m = oMonth.value ;
                if(m >= 1 && m <= 12 && m % 1 === 0) {
                    // 判断日期
                    var d = oDay.value ;


                    // 日期的最大值不确定  28 、 29 、30 、31
                    var maxDay = 31 ;

                    // 根据月份进行判断
                    if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
                        maxDay = 31 ;
                    }
                    else if(m == 4 || m == 6 || m == 9 || m == 11) {
                        maxDay = 30 ;
                    }
                    else if(m == 2) {
                        // 判断闰年
                        if(y % 4 === 0 && y % 100 !== 0 || y % 400 === 0) {
                            maxDay = 29 ;
                            var erDay = 29 ;
                        }
                        else {
                            maxDay = 28 ;
                            var erDay = 28 ;
                        }
                    }



                    if(d >= 1 && d <= maxDay && d % 1 === 0) {
                        alert('ok') ;
                        
                    }
                    else {
                        alert('日期不合法') ; 
                    }
                }
                else {
                    alert('月不合法') ;
                }
            }
            else {
                alert('年不合法') ;
            }
        }

    </script>

    
</body>
</html>